/*
 * @lc app=leetcode.cn id=978 lang=java
 *
 * [978] 最长湍流子数组
 */

// @lc code=start
class Solution {
    //注意到这里是不需要使用双指针的，因为一旦一端遍历完，直接从右边第一个满足条件的地方开始即可
    public int maxTurbulenceSize(int[] arr) {
        int maxn = 1 ;
        int f = 0 , i = 0 ,j = 1;
        for(;j<arr.length;j++){
            if(arr[j]-arr[j-1]>0 && f>=0){
                f=-1;//改成-1，代表下一个期待的是arr[j]-arr[j-1]<0
            }else if(arr[j]-arr[j-1]<0 && f<=0){
                f=1;//改成1
            }else{//等于0的情况，这时候更新maxn值
                maxn = Math.max(maxn, j-i);
                if(arr[j]==arr[j-1]){
                    i=j;//j和前面的值相等，指针i更新到j
                }else {
                    i=j-1;//指针i更新到j的前一个
                    j=i;//同步i=j
                }
                f=0;
            }
        }
        return Math.max(maxn, j-i);
    }
}
// @lc code=end

